{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入相应的包\n",
    "from copy import deepcopy\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from matplotlib import pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Input Data and Shape\n",
      "(3000, 2)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>V1</th>\n",
       "      <th>V2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2.072345</td>\n",
       "      <td>-3.241693</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>17.936710</td>\n",
       "      <td>15.784810</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.083576</td>\n",
       "      <td>7.319176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>11.120670</td>\n",
       "      <td>14.406780</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>23.711550</td>\n",
       "      <td>2.557729</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          V1         V2\n",
       "0   2.072345  -3.241693\n",
       "1  17.936710  15.784810\n",
       "2   1.083576   7.319176\n",
       "3  11.120670  14.406780\n",
       "4  23.711550   2.557729"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 导入数据\n",
    "data = pd.read_csv('data.csv')\n",
    "print(\"Input Data and Shape\")\n",
    "print(data.shape)\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x115e04b70>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 提取字段并可视化数据，使用scatter plot\n",
    "f1 = data['V1'].values\n",
    "f2 = data['V2'].values\n",
    "#X = np.array(list(zip(f1, f2)))\n",
    "X = np.random.random((200, 2))*10\n",
    "plt.scatter(X[:,0], X[:,1], c='black', s=6)\n",
    "\n",
    "#plt.scatter(f1, f2, c='black', s=8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "初始化之后的中心点：\n",
      "[[ 58.  27.]\n",
      " [ 76. 101.]\n",
      " [ 69.  25.]]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x115a9c470>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# K-means里的K值\n",
    "k = 3\n",
    "# 随机初始化K个中心点，把结果存储在C\n",
    "C_x = np.random.randint(0, np.max(X), size=k)\n",
    "C_y = np.random.randint(0, np.max(X), size=k)\n",
    "C = np.array(list(zip(C_x, C_y)), dtype=np.float32)\n",
    "\n",
    "print(\"初始化之后的中心点：\")\n",
    "print(C)\n",
    "\n",
    "# 把中心点也展示一下\n",
    "plt.scatter(X[:,0], X[:,1], c='#050505', s=7)\n",
    "plt.scatter(C[:,0], C[:,1], marker='*', s=300, c='g')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x115b60860>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 存储之前的中心点\n",
    "C_old = np.zeros(C.shape)\n",
    "clusters = np.zeros(len(X)) # K=3,  clusters = [0,0,1,2,1,0]\n",
    "\n",
    "def dist(a, b, ax=1):\n",
    "    return np.linalg.norm(a - b, axis=ax)\n",
    "\n",
    "error = dist(C, C_old, None)\n",
    "# 循环算法，直到收敛。收敛的条件就是，判断当前的中心点与之前的中心点之间有没有变化，没有变化距离就会变成0，然后抛出异常\n",
    "while error != 0:\n",
    "    # Assigning each value to its closest cluster\n",
    "    for i in range(len(X)):\n",
    "        distances = dist(X[i], C)\n",
    "        cluster = np.argmin(distances)\n",
    "        clusters[i] = cluster\n",
    "    # 在计算新的中心点之前，先把旧的中心点存下来，以便计算距离\n",
    "    C_old = deepcopy(C)\n",
    "    # 计算新的中心点\n",
    "    for i in range(k):\n",
    "        points = [X[j] for j in range(len(X)) if clusters[j] == i]\n",
    "        C[i] = np.mean(points, axis=0)\n",
    "    error = dist(C, C_old, None)\n",
    "\n",
    "colors = ['r', 'g', 'b', 'y', 'c', 'm']\n",
    "fig, ax = plt.subplots()\n",
    "for i in range(k):\n",
    "        points = np.array([X[j] for j in range(len(X)) if clusters[j] == i])\n",
    "        ax.scatter(points[:, 0], points[:, 1], s=7, c=colors[i])\n",
    "ax.scatter(C[:, 0], C[:, 1], marker='*', s=200, c='#050505')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "初始化之后的中心点：\n",
      "[[7. 2.]\n",
      " [3. 7.]\n",
      " [5. 4.]]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x11645fa20>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD8CAYAAABn919SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi40LCBodHRwOi8vbWF0cGxvdGxpYi5vcmcv7US4rQAAIABJREFUeJztnX2Mldd17p81w8zhDBxskD3g4lBsKXVxo9umHiZpe2Vd4hTnqqiOVKlNkSeB9oo/mlD3wykpqlpFtqgjodqR41ayElqsDL6KP6QmI7uhQ6nSSCVT7FQKDDdJFcfYxjBTjDMThOeLdf84Z9AwnI/3Y+93f7zPT0LMnDnnvGvv95y1137W2nuLqoIQQkj4dLk2gBBCiBno0AkhJBLo0AkhJBLo0AkhJBLo0AkhJBLo0AkhJBLo0AkhJBLo0AkhJBLo0AkhJBJWFHmxW265RTdv3lzkJQkhJHheeeWV/1bVWzs9r1CHvnnzZpw8ebLISxJCSPCIyOtJnkfJhRBCIoEOnRBCIoEOnRBCIqGjQxeRQyIyISKnljy2TkT+WUR+2Ph/rV0zCSGEdCJJhP4PAD627LHPATimqu8HcKzxOyGEEId0dOiq+i0A7yx7+AEAhxs/HwbwccN2EUIISUlWDX29qr7d+Pk8gPWG7CGEEJKR3ElRrZ9h1/IcOxHZIyInReTk5ORk3ssRQgwxcXkCIz8YwcTlCdemZCaGNpgk68KiCyJym6q+LSK3AWjZm6r6NICnAWBgYIAHmBLiAROXJ7DlqS2YW5hDT3cPznz6DPpX9ad+j7G3xjC4cTD1a01gog2xkTVC/zqATzV+/hSAfzRjDiHJYGSWj7G3xjC3MIfp2WnMLcxh7K2xVK9fdKY7X9iJLU9tcXIf8rYhRpKULT4L4N8B3CUib4rI7wN4DMCvi8gPAXy08btTJiaAkZH6/yRu8jqT2AaDLO0Z3DiInu4e1Hpr6OnuweDGwVTX9MGZ5m1DjHSUXFT1d1v86T7DtmRmYgLYsgWYmwN6eoAzZ4D+cs+8omapM6n11jD21hh2/NyORK+NbZqetT39q/px5tNnMksmPjjTvG2IkShWio6N1Z359HT9/zHOvKImjzPxIbI0SZ729K/qx46f25HJES460yO/dcTpoJinDTEShUMfHKxH5rVa/f/BhN/vNDKNbUmHklFy8jiTvJGlS7mm2bVdRsp5nGlsspcvSL3qsBgGBgbU1va5ExP1yHxwMJnckkamsS3pUDIqlqzVGS7lmnbXdl1tkhbXsldo/QUAIvKKqg50el4UETpQd4A7diR3hGlkGtuSDiWjYskaWSaVN2xEn+2uHZrs4FL28qE6xyaFHnDhE2lkmqySjg1biDuSyBu2ok8fkpCmcNmWPAn1ECitQ+/vr0sbSWSaNM+1bQtxR6eqionLE/jS2JcwMz+Dy3OXjToMmxUdRUsQWdtiws6YBsZmRKOhE+KSxch8dmEWl2cvo6+nD5UVFe/LIl3r2UkxaWfSgcEnrb10GjohLlmcyv909qdY1bsKf/Irf5Lb6RRRBRJKGadJO5PkHELV2unQCTHA0ql8b3cvPjP4mVzOvKiVsKFIECbsTNMvoQx0y4lKQ09buhg77I/iMKlxF7kSNpTVlnntTNsvoQx0y4nGobOW+3pM9EdIA4IPeufiVD4vplbCJh0MTNltmzx2pu2XUAa65UTj0JfWctdq9d93+P8ZtUbe/ghpgAwlsZeUPM7EdWSZZ9GWTeeZpV9CGeiWEoVDn5gA3n0X6O5mLfcieWvblw8IR48CN9/sZ7QeY21xVmfiMrLMOrAWMSCHGnGnJfik6GIk+Qd/UP/9b/82eTQZ8/4pi7XtR45ki66XDgjd3cDevcDOnfW+9q2/iohKQ9p7xNXK0ayJxKISkKGtqM1C8BH68kjy5pvN7+USKovbIWR97eJip3ffrQ+YvspZtqOvIiJIH3IAeck6sJoekGPoy6wE79CzSgvU3DuzOCBMTPi/NYFNvdO2pNNqwAjNMWUdWE0OyEXnU3y7R8E79KzL5rl/SnLKvjWBbUmn2YAxuHEwyERvHu3fxCBZZD7Fx2R88Bo6kH6nxcXXLNeYY9bU85Klj4vEpsZt+zCHZgNGK105JC3fBUVW+STR/ou+X9zLpUEZNPVY8TFSSsvyqXuzNgEIvp1FUJQM0ulzZ/JzGd1eLrajZ+5JHi6hLtNeyvIKjGazghjaWQRFVbN0mrm5uF9BaOimo+dmKyCpqYeL68U0tliuK8fazpBpp/27uF9BOHSTFSmtBoeyJ/58Jcn0uSyLRsrSzlhwcb+C0NBNRugjI/UFMouDw5EjLFf0lRi0cUJMEJWGnnfV41IorYQDNWO7XL161fh7sgrHLUFILsD1qx7z7AK4ODgcPWrexjJjY2dGasb2uHjxIu655x68+uqrWLdunZH35IzKPcE49EVMyS8PPcQSRVPYKvmkZmyPkZERnDt3DiMjI/jkJz9p5D1j3CQtNIKQXJZioryQJYpmsdmfZdhQyQWHDx8GADzzzDPG3pMzKvcEF6Gb0MCpo5uF/RkWU1NTGGuMuidOnMDU1BTWrFmT+305o3JPcA7dRHkhSxTNwv70l0uXLuHs2bPXPXb8+HFUKhXMzs6iUqng0KFD2LZt23XP2bRpE9auXZv6eiEeChETQZQtEkKysX//fhw8eBCVSgWVSgUAoKqYnp6+9pxarQYRAQDMzMxgZmYGDz/8MA4cOODE5qLxbcfEZiQtWwwuQieEJOfRRx/FTTfdhAMHDmBqaqrpc5Y692q1ikceeQSf/exnizLRKbFV5uRKiorIH4vIaRE5JSLPishKU4YRUmZM1XN3dXVh3759GB0dxfr167FyZfOvaKVSwYYNG3Ds2DHs27cPXV3B1UtkIra1DpnvmohsBPCHAAZU9QMAugF8wpRhxB7cJthvFqPGnS/sxJanthhZpLN161acPn0aGzZsaPr3/g39OHXqFAYGms/qY10wFFtlTl7JZQWAqojMAegDcC6/ScQm3CbYf2zVc/f29uL8+fNN//bGW2/gJ/M/wRrcWO3STpYIQX9uR2yVOZkjdFV9C8BBAGcBvA3gJ6p6w/pLEdkjIidF5OTk5GR2S5cRSpTpm52dasZ9s7eM2IoaR0dH0dPTAwDo6+vDip4VQE/jj93AV57/StPXtTtsI+1MwsdIP6a1Dnkkl7UAHgBwB4CfAbBKRB5c/jxVfVpVB1R14NZbb81u6RIWo0xfT6FfxEc729WM+2hvGbF1QtLw8DCmp6dRrVaxe/dunP7RafTc01OfZ88A3xv9XtPXtRpg0urPNqQkcj15Mh8fBfCaqk6q6hyAFwH8qhmz2hPKSk8f7Wy30ZmP9pYV01Hj7OwsXn75ZdRqNTz33HN4/PHHccf6O/Day6/hL770F1hdW41jR49hbm6uqS3NBpi0M4nYEpA+ksehnwXwYRHpk3oR630Azpgxqz2hrEz01c5W54P6ai/Jz8LCAoaGhjA+Po7t27dfe7x/VT/+8vf+EmfGz2BoaAjz8/NNX99sgEk7k4gtAekjuRYWicjnAfwOgHkA3wXwf1R1ptXzTS4ssrG7nw1CsXOR0OwlftEpSRp6EtUVSRcWcaUoIcQIvizSiXHQ4EpRQkih+LB9ri+DiivKsRyMEEv4WIbnCh808rInXhmhE5KRskeDy/FhkY4Pg4pLGKGXHC4kyk7Zo8FmuF6kY6uGPxQYoReAr5Uj3AYgH2WPBn2lzHuy06FbxmenuXQhUa1W/31HOb8HmfBBYiBkKaWQXFzKCj6vvuRCovy4lhgIWUr0EbrrCNlnp8mj48wSY/1zSLD/A3XoaTRp17KC705zcRuAVviq//sGK17cwv6vE5zkknZHQB8i5FZ7p2SlKAmJuy8mhxUvbmH/1wnOoafVpNvtLhgiRTpZn/V/37Bd8cIFTO1hxVGd4CSXLBF3J1khJDpJSCYlEh9mN6Fgs+LFtpwQg/bcrP9jaFdagnPovmvStklyQIWpBHDZ+zottuqfbe6REpP2vLT/Y2pXGoKTXADzmrRp0mrcaZ6f9ICKK1eAozccCJge3/u6DCSVE7LIMrFqz7G2qxPBRei+0EraSBslZ4mqW0lIg4NAd3f95ytXgL17ge3b6YxdYWrKn0TOyRqRZtGeQ5Ayyqqp06FnoJ0TTlsmabKssr8fePJJYM+eukNfWODqT1eYnvJ3knOyyjJptf9QpIyyruINUnJxTbvqj7SJRNOJx+3bgWqViUzXFD3lzxORplntGpKUUcZVvIzQM9DOCadNJJpOPPqSyCz7gqSip/xFRaRllTJCgUfQZaTsDqsdrrdb8IUQtOYsxNoun0l6BB0ll4yw+qM1ZVuQ1Kq6JNYpf6ztigFKLsQ4ZVqQFEqSkJQDRujEOLFtt9COkJKEJH7o0CPG5T7wZZGkmCQkPkHJJVKYmOyMieReDPXOTHLGAx26A4qokHG9D7zvmNS+Qz7DkjmAuCid5OL6lPuitr8tU2IyC9S+67Af4qJUDt2HAxuKKukrU2IyC9S+68TYD2XeO75UkosPMkSRkXNM+8CbJgbt2wQ+9YMJLb/sElKpHLoPMkSapflXr15FV1epJlGFErL2bRIf+sGUI7a5d3wIlMpb+CJDJCnpu3jxIu6880688847xRlGiCNMafkxSkhpKJVDB8Kpjx4ZGcG5c+cwMjLi2hSjuE5Kk3zY0qdNOeJFCenIbx0pndwC5NycS0RuBvBlAB8AoAB+T1X/vdXzY9qcyzYf+chH8O1vfxv33nsvRkdHXZtjpNSStfFhw7NN3VHU5lxfBPBPqvrzAH4RwJmc70cATE1NYaxR/nLixAlMTU05tcdUdVDZNu2KDdsljtz0Kz+Zk6IichOAewHsAgBVnQUwa8Ys/zG1OOjSpUs4e/bsdY8dP34clUoFs7OzqFQqOHToELZt23bdc6rVTfjBD9YWsn2vqeogH5LSJDtl16dDILPkIiK/BOBpAOOoR+evAHhIVS8ve94eAHsAYNOmTfe8/vrruQz2AZPSwf79+3Hw4EFUKhVUKhUAgKpienr62nNqtRpEBAAwMzODmZkZ9PQ8jO7uA4VIFybbm2cgdLkHPeWAOuwHNySVXKCqmf4BGAAwD+BDjd+/COCRdq+55557NAa+8Q3VWk0VqP//jW9kf6+FhQV97LHHdM2aNdrT09Px35o1a3TXrsd09eqFVNe/cKH+vAsXstmZ9/V5uXBBdd26envXrSvWjgs/vaDrvrBOawdquu4L6/TCTx11AiktAE5qAr+cR0N/E8Cbqvqdxu/PA/jlHO8XDCalg66uLuzbtw+jo6NYv349Vq5c2fR5lUoFGzZswLFjx/CFL+xDb29X4uub0MBdVwe51N+5PJ6EQmaHrqrnAbwhInc1HroPdfklemzUs2/duhWnT5/Ghg0bmv79tttuw6lTpzAwMJD6+jEkI++4A1AFVq82o7+nKZ+kdkxCIW/Z4i+hXrbYC+BHAHar6qVWz2fZYnvee+899Pf347333rvhb9VqFRMTE9d09jQk1cB9PSd10f6ZGUAEOHEC+IVfyP9+aXICMWnHMbWlLBRStqiq/6mqA6r6P1T14+2cOenM6Ogoenp6AAB9fX3o7e1FX18fAGDFihWZ69GTRPQ+bFzWisUZxuXLdYf+2mtm3i/NjCVPSZ1Pm0Ut1pLvfGEntjy1xahNPrWzrJRupajPDA8PY3p6GtVqFbt378b58+exa9cuVKtVTE9PY3h4OPN7d9LAfZZlTJc7mny/Tk7MpgPNgq18gG/tLCt06J4wOzuLl19+GbVaDc899xwef/xxrF69Gk888QS+9rWvoVar4aWXXsLc3JyV6/tQI95K1zadszD1fkmcmG8JVVv5AN/aWVbo0D1hYWEBQ0NDGB8fx/bt26/72/3334/x8XEMDQ1hfn7eyvVdb1zWSfLpNMNIu0eMiaqdJE7Mt4Sqrb1OfGtnWcmVFE0Lk6KkFSMjdWe+uBr1yJHkq1Fd7RGTdG+TsiQhy9JOFyRNipZqP3TiL3kkH1cHlyQ9HMKH/caLoCzt9Bk6dOIFaQ7+WI5L/d+6E/O1lpR4CR068YZOR+a18m15BgOv4X7DJCV06CQIOvm2KM9P9eEQXBIUrHIhQeBznbw1fKglJUHBCJ0EQSl9W7RaErEFHToJgtL6tii1JGILSi4kGFxv4RssPJk7HwH1X5QROiu9CGnASpnWJHEUgfVfdBG6z7sGEpIKE5FhKbPJCUjqKALrv+gcemD9T0hzTEUmpcwmJyCpowis/6Jz6IH1PyHNMRWZuN51zVeSOorA+i/KzbmooZeTqO57O+02qoY6JKB+TLo5V5QOPQsB3VvShMByV8lo9qGMsqGkE4UcQRcLRSVSA6p+Co62CkWoHd+sTpNJIrOE+tloQZRli2kpYssMBlZ2aSmJxtbxTBKZI7bPBhihAyjmO8LAyi4tc1exdXxgSToj2IqiY/tsgBr6NWxr6BEGA05JfL/Y8WFj8/4F9NngiUUpsb1lhom9SJi4rZPqe1jaTWAiwaYeGuFngw69QPIMGgEFE8ZoNYCl/o5zg6twsa2HRvbZoIYeCBHKfW1pV3nkRV6wqOqIyKowUlPGnEEOGKEHghdOrEDaReHOZ8pFTZfKOC1rRmRRtE0YoXtGq4AshkAlTbDZaQBzupVuUdOlsk3LSG4YoXtEzOdmpg02nUfh7ShquuTjtMzXzLyvdhUMHbpHxHwmcJa2JRrAXHyRixptfBvVfJWAfLXLAZRcPMLHgMwUVtrmcvP7ojQfn45p8lUCymJXpMnm3A5dRLpF5LsiMmLCoFhJ8vmJQSdvhZW2+epgYsXXiCOtXRGfgmNCcnkIwBkAawy8V5SkmRGGrJN3wnjbinQw1Gj9k4AWSWtXxNpmrghdRG4H8BsAvmzGHHP4NKNiIGmJoqY0EUd0qfFJAlpKGrt8nWkYIG+E/gSAPwNQM2CLMXzLkUT8+XFPEVOaiCO6UuLrTMMAmSN0EdkBYEJVX+nwvD0iclJETk5OTma9XCp8i4hj1sajo9nUjiNyfPg608hJ5t0WReSvAQwBmAewEnUN/UVVfbDVa4o8gs6nCJ0EAo99I55i/cQiVf1zVb1dVTcD+ASAf2nnzIuEETHpSLNIvN3ULtKILjU+JafIDUS7sMiGtBpCkBaCjc5pFYkXLa2EdrM49fUeIw5dVf8VwL+aeC9fCeGzHIKNXtAqyVlksizEm8XkcHs8GKC5UjQhviVamxGCjV7QLhIvSloJ8WYxOdwaT0pb6dATEsJnOQQbvcCHJEuIN8uHfvMVTwZonimaAg9mVB0JwUbSgDcrHixLaEmrXOjQCSHEBBYHaOtliz7BSqr0OOsz3iwSKx6UtgZfthhisYBrnPWZyQsXKVdQGmEfBELwEbonuYigSNpnxoNpUzeryIoCT6oXnMI+CIbgHXqIxQKuSdJnVr7Dpm5WkaM4Iwb2QUAE79BZSZWeJH1m5Tts6mYVOYozYmAfBASrXEhTvM9NUEMvlix9EFq/eWwvyxZJbjz+fBPf8T4iWIbn9paqbJHYwYMqLBIqPuru7bL8R48CV674ZW8Ggi9bJITUuXr1Krq6PInRfNPdO+11v3dv3aEDQHe3e3sz4sndJyQHLhcrebJQ6uLFi7jzzjvxzjvvOLXjGr5VK7SbMYyNAQsL9Z+rVeDJJ93bmxE69BKSxgd54q9a47JG2qP67JGREZw7dw4jIyPObLgBnzS7djOGpX+rVoHt293ZmRM69JKRxgd55K9a41Kr9UgnPnz4MADgmWeecWaD17SbMfg2m8gBHXrJSOODPPJXrXGp1XqiE09NTWGscXNOnDiBqakpJ3Z4T7sZg0+ziRwwKVoy0vggT/xVe4o8ZciDa1+6dAlnz5697rHjx4+jUqlgdnYWlUoFhw4dwrZt2657zqZNm7B27Vo7RrG+1RtYh15C0nz/+F3NiKWO279/Pw4ePIhKpYJKpQIAUFVMT09fe06tVoOoAgsLmLl6FTMzM3j44Ydx4MABY3Zcw/P67VhIWofOCL2EpDlAu+Nz6fFvxKKTe/TRR3HTTTfhwIEDLaWVpc69CuCRffvw2c9/3sj1b4DnjHoFNXSSnSCypikwVdJjMfnQ1dWFffv2YXR0FOvXr8fKlSubPq8CYIMqjvX2Yt+HPmSvPt2kLud9SZX/MEIn2YkpOjMZVReQfNi6dStOnz6NgYEB/PjHP77h77eJ4GSlgjW9vXaTH6byCJRujMAInWQniKxpQkxG1QWVwfX29uL8+fNN/3ahUkHlmWeKcYwmKkSCKKnyHzp0kh2Tjsv1dNv04FRAGdzo6Ch6enoAAH19fejt7UVfXx8AYEVPD0Z7e8OJcmMKDhwSnEN3/b0nyzDhuJZq8XfdBXz1q51vsOkPQoCLS4aHhzE9PY1qtYrdu3fj/Pnz2LVrF6rVKqanpzE8POzaxOQE2P8+ElTZImW2SBkZqTvzxeqMarX+r9UN5gcBs7Oz6O/vR3d3N5599llsX7Jc/Zvf/CZ27tyJhYUFTE5OXoviW8JKJe+JcvtcymyRsjjdrlbrv1+50v4G84OAhYUFDA0NYXx8/DpnDgD3338/xsfHMTQ0hPn5+fZvlLRSiVPjIGCETvxgYqK+J/XevfWd79rdYH4QzLF0dlSr1SWP5ZVK7G/nRBmhU2bzEFORW38/8OCDwPe/3/kG84NgjiTJSM6IgiGoCJ14BiO3OOikofM+OyfKCJ14BiO3OOhUqcQZUTBkdugi8j4ROS4i4yJyWkQeMmkYCQDWDpeHSLaXjZ08Efo8gD9V1bsBfBjAp0XkbjNmESCAwgJGboR4RWaHrqpvq+qrjZ+nAZwBsNGUYa5x7Uy92veqXWcwciMmcP2FiwQjm3OJyGYAHwTwHRPv55q0OSAb6zK82feKCTFim5g+Y44XaeVOiorIagAvAPgjVb1hg2YR2SMiJ0Xk5OTkZN7LFUKaXJ+tSNobeZqJz3JiO2Je+v4xfMYmJupbVtx1l9Npda4IXUR6UHfmw6r6YrPnqOrTAJ4G6mWLea5XFGmcqa1I2uXJatfhzchCCsN2xLz8/b/1rbA/Y4vtuXKl/g9wNq3OU+UiAL4C4Iyq/o05k9yTJtdn0995IU8z8VksRWjJna5hO2Je/v6vvRb2Z2yxPYvOvFp1NjBlXlgkIv8TwL8B+B6Aq42H96vqS61eE+vCIu5tZImydWwRWnKSaxQdoYfoxJeytD3d3cCTTwLbtxttk/UzRVX12wAk6+tjIs0ZnSQhsX3pk1BEJjzJNWzrfd7oiYbwqD1cKUr8JIZEWVqKyFckvYZtvc8LPdEgnrSHZ4qS4kgjoZQxGVtEpOdRNEnMw825SDFkkVBcaOhl0+1JEHBzLo/gIjhkk1CKnsZ6tTy3JPDLYRRKLpYpY26vKTYkFNPRtDfLc0sCvxzGYYRumTLm9ppiup7dRjSdZdBhhJkdfjmMwwjdMmXM7bXEZH2njWg6bcKQEWY++OUwDiN0y3i70DL0yNKWM0ij2zPCzIe3X45wYZVLGYklsnRdkRJLPxLvYZULaU0skaXrxRyMMIlnUEMvI9QuzcF9H4hH0KGXEa4WJCRKSie5+JILdG6Ha7mCkFBw/mVNTqkidF9yWL7YQQjpQGBf1lJF6L7kAn2xgxDSgcC+rKVy6L7kAn2xI1oCmiITzwnsy1oqycWXXKAvdkRJYFNk4jmBfVlLFaED/uQCfbEjOgKbIpMACOjLWjqHTiInsCkyISaJxqFTNiUAuHqTlJooNHTKpuQ6uHqTlJQoInTKpoQQEolDp2xKCCGRSC6BVRYRQogVonDoAGVTQgiJQnLJCytkCCHWKNDBRBOhZ4UVMoQ4wvWJU0VQsIMpfYTOChlCHLDo6HburP9f1PS46Ol4wQ6m9A6dFTKEIHpHB8DNIFKwgym9Q+fCQlJ6Qnd0SQejJIOI6YGtYAdTeg0dYIUMKTlLHV2tVv/d9hfCVK1xGo260yBiS+8u0MHkitBF5GMi8n0R+S8R+ZwpowghBeJKdzSxi2Ea6aZTtBxBQi1zhC4i3QCeAvDrAN4E8B8i8nVVHTdlHCGkAEJemZd2MGoXLUeQUMsjuQwC+C9V/REAiMj/BfAAADr0MlKGErSYCVV3NDkYhTywNcjj0DcCeGPJ728C+FA+c0iQsJifuMTkYBTqwNbAepWLiOwRkZMicnJyctL25YgLItAeCYmBPA79LQDvW/L77Y3HrkNVn1bVAVUduPXWW3NcjnhLBNojITGQR3L5DwDvF5E7UHfknwCw04hVJCwi0B4JiYHMDl1V50XkMwC+CaAbwCFVPW3MMhIWgWuPhMRAroVFqvoSgJcM2UIIISQHpV/6TwghsUCHTgghkUCHTgghkUCHTgghkUCHTgghkSCqWtzFRCYBvJ7jLW4B8N+GzAmBsrUXYJvLQtnanLe9P6uqHVdmFurQ8yIiJ1V1wLUdRVG29gJsc1koW5uLai8lF0IIiQQ6dEIIiYTQHPrTrg0omLK1F2Cby0LZ2lxIe4PS0AkhhLQmtAidEEJIC4Jw6GU7jFpE3icix0VkXEROi8hDrm0qAhHpFpHvisiIa1uKQERuFpHnReT/icgZEfkV1zbZRkT+uPGZPiUiz4rIStc2mUZEDonIhIicWvLYOhH5ZxH5YeP/tTau7b1DX3IY9f8GcDeA3xWRu91aZZ15AH+qqncD+DCAT5egzQDwEIAzro0okC8C+CdV/XkAv4jI2y4iGwH8IYABVf0A6ttuf8KtVVb4BwAfW/bY5wAcU9X3AzjW+N043jt0LDmMWlVnASweRh0tqvq2qr7a+Hka9S/6RrdW2UVEbgfwGwC+7NqWIhCRmwDcC+ArAKCqs6r6rlurCmEFgKqIrADQB+CcY3uMo6rfAvDOsocfAHC48fNhAB+3ce0QHHqzw6ijdm5LEZHNAD4I4DtuLbHOEwD+DMBV14YUxB0AJgH8fUNm+rKIrHJtlE1U9S0ABwGcBfA2gJ+o6lG3VhXGelV9u/HzeQDrbVwkBIdeWkRkNYAXAPyRqk65tscWIrIDwISqvuLalgJZAeCXAfydqn4QwGVYmob7QkM3fgBKBPAXAAABU0lEQVT1wexnAKwSkQfdWlU8Wi8ttFJeGIJDT3QYdWyISA/qznxYVV90bY9lfg3Ab4rIj1GX1D4iIl91a5J13gTwpqouzryeR93Bx8xHAbymqpOqOgfgRQC/6timorggIrcBQOP/CRsXCcGhXzuMWkR6UU+ifN2xTVYREUFdWz2jqn/j2h7bqOqfq+rtqroZ9fv7L6oadeSmqucBvCEidzUeug/AuEOTiuAsgA+LSF/jM34fIk8EL+HrAD7V+PlTAP7RxkVynSlaBCU9jPrXAAwB+J6I/Gfjsf2NM1xJPOwFMNwIVH4EYLdje6yiqt8RkecBvIp6Jdd3EeGKURF5FsD/AnCLiLwJ4K8APAbgayLy+6jvOPvbVq7NlaKEEBIHIUguhBBCEkCHTgghkUCHTgghkUCHTgghkUCHTgghkUCHTgghkUCHTgghkUCHTgghkfD/AZW7WSgGC7hLAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# K-means里的K值\n",
    "k = 3\n",
    "# 随机初始化K个中心点，把结果存储在C\n",
    "C_x = np.random.randint(0, np.max(X), size=k)\n",
    "C_y = np.random.randint(0, np.max(X), size=k)\n",
    "C = np.array(list(zip(C_x, C_y)), dtype=np.float32)\n",
    "\n",
    "print(\"初始化之后的中心点：\")\n",
    "print(C)\n",
    "\n",
    "\n",
    "# 存储之前的中心点\n",
    "C_old = np.zeros(C.shape)\n",
    "clusters = np.zeros(len(X))\n",
    "\n",
    "def dist(a, b, ax=1):\n",
    "    return np.linalg.norm(a - b, axis=ax)\n",
    "error = dist(C, C_old, None)\n",
    "# 循环算法，直到收敛。收敛的条件就是，判断当前的中心点与之前的中心点之间有没有变化，没有变化距离就会变成0，然后抛出异常\n",
    "while error != 0:\n",
    "    # Assigning each value to its closest cluster\n",
    "    for i in range(len(X)):\n",
    "        distances = dist(X[i], C)\n",
    "        cluster = np.argmin(distances)\n",
    "        clusters[i] = cluster\n",
    "    # 在计算新的中心点之前，先把旧的中心点存下来，以便计算距离\n",
    "    C_old = deepcopy(C)\n",
    "    # 计算新的中心点\n",
    "    for i in range(k):\n",
    "        points = [X[j] for j in range(len(X)) if clusters[j] == i]\n",
    "        C[i] = np.mean(points, axis=0)\n",
    "    error = dist(C, C_old, None)\n",
    "\n",
    "colors = ['r', 'g', 'b', 'y', 'c', 'm']\n",
    "fig, ax = plt.subplots()\n",
    "for i in range(k):\n",
    "        points = np.array([X[j] for j in range(len(X)) if clusters[j] == i])\n",
    "        ax.scatter(points[:, 0], points[:, 1], s=7, c=colors[i])\n",
    "ax.scatter(C[:, 0], C[:, 1], marker='*', s=200, c='#050505')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
